package org.dei.perla.sys.device.channel.frame.header.concrete.simple;

import org.dei.perla.sys.device.channel.frame.header.FrameHeader;
import org.dei.perla.sys.device.channel.frame.header.FrameHeaderSender;

/**
 * Classe per inviare header di tipo SimpleFrameHeader.
 * Suppone di inviare prima l'indirizzo sorgente e poi quello destinazione.
 */
public class SimpleFrameHeaderSender extends FrameHeaderSender {

	public byte[] getHeaderBytes(FrameHeader parSimpleFrameHeader) {
		
		byte []b1 = intToByteArray(((SimpleFrameHeader)parSimpleFrameHeader).getSourceAddress().getAddress().intValue());
		byte []b2 = intToByteArray(((SimpleFrameHeader)parSimpleFrameHeader).getDestinationAddress().getAddress().intValue());
		
		byte []b = new byte[8];
		for ( int i = 0; i < 4; i++ ) {
			b[i] 	= b1[i];
			b[4+i] 	= b2[i];
		}
		
		return b;
	}
	
	/**
	 * Converte un intero in un array di 4 bytes
	 * @param number Un intero
	 * @return Restituisce un array di 4 byte
	 */
	private byte []intToByteArray(int number) {
			
		byte []b = new byte[4];
		
		b[0] = (byte)( number >> 24 );
		b[1] = (byte)( (number << 8) >> 24 );
		b[2] = (byte)( (number << 16) >> 24 );
		b[3] = (byte)( (number << 24) >> 24 );
		
		return b;
		
	}


}
